/**
 * 注册处理模块
 * 统一处理用户注册相关的逻辑
 */

import { validateRegisterForm } from './validation.js'

/**
 * 处理用户注册
 * @param {object} params - 注册参数
 * @param {object} params.registerForm - 注册表单数据
 * @param {function} params.setRegisterErrors - 设置注册错误信息的函数
 * @param {function} params.setLoading - 设置加载状态的函数
 * @param {function} params.register - 注册API函数
 * @param {function} params.switchTab - 切换标签页的函数
 * @param {object} params.uni - uni-app对象
 * @param {object} params.rawForm - 原始表单数据
 */
export async function handleRegister({
  registerForm,
  setRegisterErrors,
  setLoading,
  register,
  validateRegisterForm: customValidateRegisterForm,
  switchTab,
  uni,
  rawForm
}) {
  try {
    // 使用自定义验证函数或默认验证函数
    const validateFunc = customValidateRegisterForm || validateRegisterForm
    const errors = validateFunc(rawForm || registerForm)
    
    setRegisterErrors(errors)
    
    if (Object.keys(errors).length > 0) {
      return
    }
    
    setLoading(true)
    
    // 调用注册API
    await register(registerForm)
    
    // 显示成功提示
    uni.showToast({ 
      title: '注册成功', 
      icon: 'success' 
    })
    
    // 延迟跳转到登录页面
    setTimeout(() => {
      // 注册成功后切换到登录页面，并传递注册的邮箱
      switchTab('login', registerForm.email)
    }, 1500)
    
  } catch (error) {
    console.error('注册失败:', error)
    uni.showToast({ 
      title: error.message || '注册失败', 
      icon: 'none' 
    })
  } finally {
    setLoading(false)
  }
}

/**
 * 处理注册表单验证
 * @param {object} form - 注册表单数据
 * @returns {object} 验证错误信息
 */
export function validateRegistrationForm(form) {
  return validateRegisterForm(form)
}

/**
 * 检查注册表单是否有效
 * @param {object} form - 注册表单数据
 * @returns {boolean} 表单是否有效
 */
export function isRegistrationFormValid(form) {
  const errors = validateRegisterForm(form)
  return Object.keys(errors).length === 0
} 